package com.kang.service.impl;

import com.kang.service.DeleteDirectoryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.io.File;

@Service
@Slf4j
public class DeleteDirectoryServiceImpl implements DeleteDirectoryService {

    @Override
    public void deleteUploadMkdir() {
        //删除一个文件夹下的所有文件(包括子目录内的文件)
        File file = new File("E:\\upAndDownload\\upload");
        Integer result = deleteFile(file);
        if (result == 1){
            log.info("所有文件删除成功！");
        }
        if (file.mkdirs()) {
            log.info("文件删除后创建新的文件夹成功！");
        } else {
            log.info("文件删除后创建新的文件夹失败！");
        }
    }

    public static Integer deleteFile(File file){
        //判断文件不为null或文件目录存在
        if (file == null || !file.exists()){
            System.out.println("文件删除失败,请检查文件路径是否正确");
            return 0;
        }
        //取得这个目录下的所有子文件对象
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        assert files != null;
        for (File f: files){
            //打印文件名
            String name = file.getName();
            System.out.println(name);
            //判断子目录是否存在子目录,如果是文件则删除
            if (f.isDirectory()){
                deleteFile(f);
            }else {
                if (f.delete()) {
                    log.info("文件删除成功！");
                } else {
                    log.info("文件删除失败！");
                }
            }
        }
        //删除空文件夹  for循环已经把上一层节点的目录清空。
        if (file.delete()) {
            log.info("删除空文件夹成功！");
        } else {
            log.info("删除空文件夹失败！");
        }

        return 1;
    }
}
